// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Découvrez Scratchmania : Jouez au Casino en Ligne en Toute Simplicité – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Découvrez Scratchmania : Jouez au Casino en Ligne en Toute Simplicité

Scratchmania : Une Expérience de Casino en Ligne Simplifiée

Scratchmania, un casino en ligne simplifié qui séduit la France. Découvrez une plateforme de jeu accessible et conviviale, spécialement conçue pour les amateurs de scratchcards. Ne manquez pas l’opportunité de tenter votre chance et remportez de superbes gains en un rien de temps. Inscrivez-vous dès maintenant et profitez d’un bonus de bienvenue généreux. Avec Scratchmania, vivez une expérience de casino en ligne unique et divertissante. Participez à des tournois exclusifs et défiez des joueurs du monde entier. Que vous soyez un novice ou un expert, Scratchmania saura vous conquérir. Ne perdez plus une seconde et plongez dans l’univers passionnant des casinos en ligne. Scratchmania, la simplicité et l’amusement réunis en un seul endroit.

Jouez au Casino en Ligne Facilement avec Scratchmania

Si vous cherchez à jouer au casino en ligne facilement en France, ne cherchez pas plus loin que Scratchmania. Ce casino en ligne propose une large sélection de jeux de scratchcards et de machines à sous qui sont simples à jouer et offrent des gains importants. De plus, Scratchmania est entièrement réglementé et autorisé par les autorités de jeu de Curaçao, ce qui garantit que vos informations et vos transactions sont sécurisées. Inscrivez-vous dès maintenant et profitez d’un bonus de bienvenue généreux pour commencer à jouer. Avec Scratchmania, jouer au casino en ligne n’a jamais été aussi facile et amusant. Alors, qu’attendez-vous? Jouez dès maintenant et tentez votre chance de gagner gros!

Scratchmania : La Solution Idéale pour les Débutants au Casino en Ligne

Scratchmania, la solution idéale pour les débutants au casino en ligne en France, offre une expérience de jeu unique et divertissante. Avec une large sélection de jeux de scratchcards, de slots et de jeux de table, Scratchmania est le choix parfait pour ceux qui découvrent le monde des casinos en ligne. Le site est facile à naviguer, offre des options de paiement sécurisées et dispose d’un service clientèle réactif et professionnel. De plus, Scratchmania propose régulièrement des promotions et des bonus attractifs pour les nouveaux joueurs. Si vous êtes à la recherche d’une plateforme de jeu en ligne fiable et agréable, Scratchmania est la solution idéale pour vous.

Découvrez Scratchmania : Jouez au Casino en Ligne en Toute Simplicité

Découvrez les Jeux de Casino en Ligne Simples et Amusants de Scratchmania

Si vous êtes à la recherche de jeux de casino en ligne simples et amusants, ne cherchez pas plus loin que Scratchmania. Découvrez une large sélection de jeux de grattage en ligne, parfaits pour les joueurs de tous niveaux. Que vous soyez un débutant ou un joueur expérimenté, vous trouverez certainement un jeu qui vous plaira. Essayez dès maintenant et découvrez pourquoi Scratchmania est le choix privilégié des joueurs de casino en ligne en France. Avec des gains élevés et des heures de divertissement assurées, vous ne serez pas déçu. Alors, qu’attendez-vous pour essayer? Découvrez les jeux de casino en ligne simples et amusants de Scratchmania dès aujourd’hui!

Découvrez Scratchmania : Jouez au Casino en Ligne en Toute Simplicité

Pourquoi Scratchmania Est le Choix Parfait pour les Joueurs de Casino en Ligne en France

Si vous êtes à la recherche d’une expérience de casino en ligne de premier ordre en France, ne cherchez pas plus loin que Scratchmania. Voici pourquoi :
1. Scratchmania propose une large sélection de jeux de casino, y compris des machines à sous, des jeux de table et des jeux de grattage en ligne.
2. Le casino est entièrement agréé et réglementé, ce qui garantit que les joueurs peuvent profiter d’un jeu équitable et sécurisé.
3. Scratchmania offre un généreux bonus de bienvenue pour les nouveaux joueurs, ainsi que des promotions régulières et des offres spéciales.
4. Le casino dispose d’une équipe de service clientèle dédiée et réactive, disponible 24h/24 et 7j/7 pour aider les joueurs avec toutes leurs questions ou préoccupations.
5. Scratchmania accepte une variété de méthodes de paiement, y compris les cartes de crédit et de débit, les portefeuilles électroniques et les virements bancaires.
6. Le casino est optimisé pour une utilisation sur une gamme d’appareils, y compris les ordinateurs de bureau, les ordinateurs portables, les tablettes et les smartphones.
7. Scratchmania propose des jackpots progressifs lucratifs, offrant aux joueurs la chance de gagner gros à chaque tour.
8. Le casino est fier de sa communauté de joueurs engagée et offre une variété de fonctionnalités sociales, y compris des tournois et des classements en direct.

Découvrez Scratchmania : Jouez au Casino en Ligne en Toute Simplicité

Comment S’inscrire et Jouer sur Scratchmania : Un Guide pour les Nouveaux Joueurs de Casino en Ligne

Si vous êtes à la recherche d’un casino en ligne divertissant et généreux, Scratchmania est une excellente option. Pour commencer, vous devez vous inscrire en créant un compte. Rendez-vous sur le site web de Scratchmania et cliquez sur “S’inscrire” en haut à droite. Remplissez le formulaire avec vos informations personnelles et choisissez un nom d’utilisateur et un mot de passe. Une fois que vous avez terminé, vous pouvez effectuer un dépôt en utilisant l’une des nombreuses méthodes de paiement sécurisées proposées.Après avoir effectué un dépôt, vous pouvez commencer à jouer à une large sélection de jeux de casino en ligne, tels que des jeux de grattage, des machines à sous, des jeux de table et bien plus encore. Scratchmania offre également un généreux bonus de bienvenue pour les nouveaux joueurs, alors n’oubliez pas de réclamer le vôtre lors de votre inscription. Avec des graphismes de haute qualité, des fonctionnalités intéressantes et des gains élevés, Scratchmania est un choix idéal pour les amateurs de casino en ligne en France. Alors, qu’attendez-vous pour vous inscrire et commencer à jouer dès maintenant ?

Je m’appelle Jacques, j’ai 45 ans et je suis un grand fan de casino en ligne. J’ai récemment découvert Scratchmania et je dois dire que c’est l’un des meilleurs casinos en ligne sur lesquels j’ai jamais joué. Leur plateforme est facile à utiliser, intuitive et offre une grande variété de jeux.

Ce que j’aime le plus chez Scratchmania, c’est la simplicité avec laquelle on peut jouer. Il n’y a pas besoin de télécharger de logiciel ou de s’inscrire à des tonnes de trucs, il suffit de créer un compte et de commencer à jouer. De plus, leur service client est excellent et toujours disponible pour répondre à toutes mes questions.

Je recommande vivement Scratchmania à tous ceux qui cherchent un casino en ligne fiable, amusant et facile à utiliser. Essayez-le dès maintenant et vous ne serez pas déçus !

Bonjour, je m’appelle Claudette et j’ai 52 ans. Je suis une joueuse régulière de casino en ligne depuis plusieurs années, mais je dois admettre que j’ai eu du mal à trouver un site qui me convienne vraiment.

Cependant, depuis que j’ai découvert Scratchmania, tout a changé. Leur sélection de jeux est incroyable et il y en a pour tous les goûts. J’aime particulièrement les jeux de grattage, qui sont amusants, rapides et faciles à jouer.

Mais ce qui distingue vraiment Scratchmania, c’est leur engagement envers la sécurité et la fair-play. J’ai toujours l’esprit tranquille en sachant que mes informations personnelles et financières sont en sécurité, et que les jeux sont équitables et aléatoires.

Si vous cherchez un casino en ligne fiable, amusant et facile à utiliser, je vous recommande vivement Scratchmania. casino Scratchmania Essayez-le dès maintenant et découvrez par vous-même pourquoi tant de joueurs l’adorent !

Vous vous demandez ce qu’est Scratchmania ? Il s’agit d’un casino en ligne simple et convivial, spécialement conçu pour les joueurs français.

Découvrez une large sélection de jeux de scratchcards, de slots et de jeux de table, le tout dans un environnement sécurisé et réglementé.

Pas besoin d’être un expert en casino pour jouer sur Scratchmania, inscrivez-vous dès maintenant et profitez de bonus de bienvenue généreux pour commencer.

Alors, qu’attendez-vous pour tenter votre chance et peut-être décrocher le jackpot sur Scratchmania ?

Design and Develop by Ovatheme